در این مقاله نحوه ی ساخت کد امنیتی(Captcha) متفاوت با قابلیت بارگذاری مجدد(Refresh) و پخش صوتی کد امنیتی را آموزش می دهیم.کپچا (به انگلیسی: CAPTCHA)، که سرنام برابر انگلیسی «آزمون همگانی کاملاً خودکارشده تورینگ برای مجزا کردن انسان و رایانه» است، یک سامانه امنیتی و روند ارزیابی است که برای جلوگیری از برخی حملههای خرابکارانه رباتهای اینترنتی بهکار میرود. جایگزین آزترا که سرنام «آزمون تورینگ تشخیص رایانه از انسان» است هم برای کپچا دیده شده است. این روند میتواند مشخص کند که مراجعه کنندگان به یک وبگاه و یا سایر خدمات آنلاین انسان هستند یا کامپیوتر. بدین منظور برنامه کپچا آزمونهایی را تولید میکند که تنها انسانها قادر به پاسخگویی به آنها باشند. چون کامپیوترها و نرمافزارهای فعلی احتمالاً نمیتوانند پاسخ درستی به این آزمون بدهند، هر کاربری که آنرا درست حل کند، انسان فرض میشود.
روال پیاده سازی کد امنیتی عمدتا به این صورت است. یک کد به صورت تصادفی و چند رقمی تولید می شود. حال یک تصویر از این کد تصادفی تولید میشود. این تصویر باید به گونهای باشد که شناسایی آن توسط رباتها سخت باشد. کد تولید شده در سمت سرور نگهداری می شود و تصویر برای کاربر ارسال می شود. بعد باید کاربر مقادیری را که مشاهده می کند را به سرور ارسال کند و تابعی وظیفه مقایسه مقدار دریافتی با مقدار ذخیره شده را دارد و سپس نتیجه را گزارش می دهد.
انواع روشهای متفاوتی برای پیادهسازی کد امنیتی وجود دارد که هر کدام معایب و مزایای خود را دارند. برای مثال برای ذخیره کد تصادفی، استفاده از Session ها روش متداولی است. ولی Session ها چند معایب عمده دارند. اول اینکه Session ها برای بهینهسازی حافظه به وجود آمدند، پس سریعاً از بین میروند یا به عبارتی در یک بازه زمانی Reset میشوند. دوماً اگر کاربر به دو صفحه دارای کد امنیتی وارد شود فقط یکی از کدها معتبر خواهد شد چرا که در Session فقط یک مقدار برای یک اندیس نگهداری می شود.
در روش دیگر، استفاده از پایگاه داده است. یعنی مقدار تصادفی تولید شده با یک شناسه در پایگاه داده ذخیره می شود و شناسه به همراه تصویر تولید شده به کاربر داده میشود. کاربر مقادیر را همراه شناسه ارسال میکند و سپس مقادیر شناسه از پایگاه داده استخراج و با مقادیر ارسالی کاربر مقایسه می شود. مزیت این روش این است که برای یک کاربر می تواند چندین کد امنیتی بدون تداخل هم تولید کرد. اما عیب این روش این است که با افزایش تعداد کاربران داده های پایگاه داده افزایش مییابد و باعث استفاده زیاد از منابع میشود که باید مدیریت شود.
اما در روشی که ما استفاده میکنیم از یک نشانه(Token) برای کدهای امنیتی استفاده میکنیم. روش کار به این صورت است که کد تصادفی تولید شده همراه با تصویر به کاربر داده شده و بعد با مقادیر وارد شده کاربر دریافت میشود. شاید برای شما سوال پیش آید که اگر کد تصادفی به کاریر داده شود، پس امنیت این کار چگونه تضمین خواهد شد؟ خب ما کد تصادفی را مستقیما تحویل کاربر نمیدهیم. ابتدا یک نشانه ایجاد و کد تصادفی را در آن قرار میدهیم و آن را با استفاده از الگوریتمی به گونهای کدگذاری میکنیم که فقط خودمان بتوانیم آن را کدگشایی کنیم، سپس آن را تحویل کاربر میدهیم. برای مثال اگر ما بخواهیم کد تصادفی ۵۸۰۷۱ را به کاربر ارسال کنیم، نشانه به شکل زیر خواهد بود:
{
CreatedDate= "1394/07/29",
ExpiredDate= "32254",
Value= "58071",
UserIP= "127.0.0.1"
}
آن را کد کرده به صورت زیر در می آوریم:S/3phybfLNBAZjklSEM04jn0Tvw1T0DF2ZnVbSyE9MtxDWhgl$raTPMj/b1kbAlX/p8E7wdmdIDNjtsW764avSnEVTJIGIMh$$1vcT$Mb4vWKQKzdTOS5Uoxb7r3WxDyVlfqFn9lFpOsyAD7427HcmFdnhaEWnyzpZrQVOfCZ$bktFCZJ$G45rASuMnw4kl5EuPIHQ==
عد آن را به کاربر میدهیم.
بر این اساس ما میتوانیم موارد امنیتی بیشماری را بررسی کنیم. برای مثال انقضای کد امنیتی و آدرس کاربر و مقدار صحیح، بدون اینکه بار سرور را افزایش دهیم. بعد از پیادهسازی این روش، امکانات قابلیت بارگذاری مجدد(Refresh) و پخش صوتی کد امنیتی را نیز پیاده سازی می کنیم.
آموزش کامل همراه با پروژه در فایل دانلود موجود می باشد.
:: برچسبها:
کپچا صوتی ,
CAPTCHA VOICE ,
CAPTCHA ,
آموزش مقابله با روباتها ,
:: بازدید از این مطلب : 132
|
امتیاز مطلب : 0
|
تعداد امتیازدهندگان : 0
|
مجموع امتیاز : 0